package com.hygenics.comparator;
import java.util.Comparator;
public class CompareObjects<E> implements Comparator<E>{
public CompareObjects(){
}
/**
* Compare two generic values
* if o is < co -> retvalue=-1
* else if o=co -> revalue=0
* else retvalue 1
*
* Implements and overrides Comparator to avoid instantiating a new class for every arraylist object
*
* @param o -compare
* @param co -compare to
* @return revalue - the integer value representing the result
*/
public int compare(Object o, Object co) {
// TODO compare two objects of the same type
int retvalue=-2;
if(o instanceof java.lang.String & co instanceof java.lang.String){
//compare strings
String comp=(String) o;
String compto=(String) co;
int i=0;
while(retvalue==-2 & i<comp.length())
{
if(i> (compto.length()-1) & i< (comp.length()-1))
{
retvalue=1;
}
else if(i>(comp.length()-1) & i < (compto.length()-1))
{
retvalue=-1;
}
else if(i>comp.length() & i>compto.length())
{
retvalue=0;
}
else if(comp.charAt(i)<compto.charAt(i)){
retvalue=-1;
}
else if(comp.charAt(i)>compto.charAt(i))
{
retvalue=1;
}
i++;
}
}
else{
//compare numbers and characters
if(o instanceof java.lang.Float){
if((java.lang.Float) o == (java.lang.Float)co)
{
retvalue=0;
}
else if((java.lang.Float) o < (java.lang.Float) co){
retvalue=-1;
}
else{
retvalue=1;
}
}
else if(o instanceof java.lang.Double & co instanceof java.lang.Double){
if((java.lang.Float) o == (java.lang.Float)co)
{
retvalue=0;
}
else if((java.lang.Float) o < (java.lang.Float) co){
retvalue=-1;
}
else{
retvalue=1;
}
}
else if(o instanceof java.lang.Character & co instanceof java.lang.Character){
if((java.lang.Character) o == (java.lang.Character)co){
retvalue=0;
}
else if((java.lang.Character)o < (java.lang.Character)co){
retvalue=-1;
}
else{
retvalue=1;
}
}
else if(o instanceof java.lang.Integer & co instanceof java.lang.Integer){
if((java.lang.Integer) o ==(java.lang.Integer) co){
retvalue=0;
}
else if((java.lang.Integer) o < (java.lang.Integer) co)
{
retvalue=-1;
}
else{
retvalue=1;
}
}
}
return retvalue;
}
}